﻿using System;
using System.Collections.Generic;
using System.Text;

namespace ASG.CodeGenerator.Core
{
    /// <summary>
    /// Represents a class code.
    /// </summary>
    public abstract class ClassCode : TypeCode
    {
        /// <summary>
        /// Represents the collection of nested classes.
        /// </summary>
        public abstract List<ClassCode> NestedClasses
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of nested interface.
        /// </summary>
        public abstract List<InterfaceCode> NestedInterfaces
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of nested enums.
        /// </summary>
        public abstract List<EnumCode> NestedEnums
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of nested delegate.
        /// </summary>
        public abstract List<DelegateCode> NestedDelegates
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of variables in the class.
        /// </summary>
        public abstract List<VariableCode> Variables
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of properties in the class.
        /// </summary>
        public abstract List<PropertyCode> Properties
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of functions in the class.
        /// </summary>
        public abstract List<FunctionCode> Functions
        {
            get;
            set;
        }

        /// <summary>
        /// Represents the collection of events in the class.
        /// </summary>
        public abstract List<EventCode> Events
        {
            get;
            set;
        }
    }
}
